"""
Swagger 文档 | 枚举类
"""

from utils.enum_utils.base import StringEnum


class SwaggerTag(StringEnum):
    """ Swagger 文档标签 | 枚举类 """

    ADMIN = "Admin", "管理模块（日志、用户等）"

    HEALTH = "Health", "健康检查模块（检测服务、数据库健康情况）"

    COMMON = "Common", "通用模块（文件存储、进度）"
    USER = "User", "用户模块"
    FAMILY = "Family", "家庭模块"


class SwaggerUITheme(StringEnum):
    """
    Swagger UI 语法高亮主题 | 枚举类

    如何选择适合的主题？
        - 如果您喜欢深色主题且需要鲜明的色彩对比：选择 monokai
        - 如果您喜欢深色主题但偏好柔和的色调：选择 nord 或 obsidian
        - 如果您在低光环境工作：选择 obsidian 或 tomorrow-night
        - 如果您偏好浅色主题：选择 idea
        - 如果您不确定：默认的 agate 是一个不错的起点

    References:
        https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/?sbsearch=SyntaxHighlighter
    """

    AGATE = "agate", "Agate 主题（默认）"
    """
    - 特点：深色主题，背景为深灰色
    - 配色：使用柔和的蓝色和橙色作为主要高亮色
    - 适用场景：适合长时间阅读，对眼睛较为友好
    - 视觉效果：整体色调沉稳，代码结构清晰
    """

    ARTA = "arta", "Arta 主题"
    """
    - 特点：深色主题，背景为深黑色
    - 配色：使用明亮的橙色和青色作为高亮色
    - 适用场景：适合需要高对比度的场景
    - 视觉效果：对比度较高，关键字和字符串等元素非常醒目
    """

    MONOKAI = "monokai", "Monokai 主题"
    """
    - 特点：经典的深色主题，源自 Sublime Text 编辑器
    - 配色：使用鲜艳的粉色、黄色和绿色作为高亮色，背景为深灰色
    - 适用场景：适合大多数开发者，是最受欢迎的主题之一
    - 视觉效果：色彩丰富，各种代码元素区分明显
    """

    NORD = "nord", "Nord 主题"
    """
    - 特点：北欧风格的配色主题
    - 配色：使用柔和的蓝色和青色为主，整体色调冷淡
    - 适用场景：适合喜欢简约、低饱和度配色的用户
    - 视觉效果：清新淡雅，视觉压力小
    """

    OBSIDIAN = "obsidian", "Obsidian 主题"
    """
    - 特点：深色主题，基于 Obsidian 编辑器的配色方案
    - 配色：使用柔和的紫色和蓝色作为高亮色，背景为深黑色
    - 适用场景：适合夜间工作或低光环境
    - 视觉效果：深邃内敛，代码层次感强
    """

    TOMORROW_NIGHT = "tomorrow-night", "Tomorrow Night 主题"
    """
    - 特点：经典的暗色主题
    - 配色：使用柔和的蓝色、粉色和黄色作为高亮色，背景为深灰色
    - 适用场景：适合长时间编码，减轻视觉疲劳
    - 视觉效果：视觉效果平衡，各元素区分度适中
    """

    IDEA = "idea", "IntelliJ IDEA 主题"
    """
    - 特点：基于 IntelliJ IDEA 的配色方案，是唯一的浅色主题
    - 配色：使用蓝色和橙色作为主要高亮色，背景为白色
    - 适用场景：适合光线充足的环境或偏好浅色主题的用户
    - 视觉效果：明亮清晰，类似于 IDE 的默认浅色主题
    """
